perm filename READ.LSP[206,LSP] blob sn#381604 filedate 1978-09-18 generic text, type T, neo UTF8
(DEFPROP READ (
 READB
 READA
 PRINDOT
 PRINA
 PRINLIS
 PRINB
 REV1
)READFNS)



(DEFUN READB (U) 
       (COND ((EQ (CAR U) 'LP) (CAR (READA (CDR U) NIL)))
	     (T (CAR U))))

(DEFUN READA (U L) 
       (COND ((NULL U) (CONS (REV1 L 'ERROR) NIL))
	     ((EQ (CAR U) 'RP) (CONS (REVERSE L) (CDR U)))
	     ((EQ (CAR U) 'LP)
	      ((LAMBDA (W) (READA (CDR W) (CONS (CAR W) L)))
	       (READA (CDR U) NIL)))
	     ((EQ (CAR U) 'DOT)
	      ((LAMBDA (W) (CONS (REV1 L (CAAR W)) (CDR W)))
	       (READA (CDR U) NIL)))
	     (T (READA (CDR U) (CONS (CAR U) L)))))


(DEFUN PRINDOT (E) (PRINA E NIL))

(DEFUN PRINA (E L) 
       (COND ((ATOM E) (CONS E L))
	     (T (CONS 'LP
		      (PRINA (CAR E)
			     (CONS 'DOT
				   (PRINA (CDR E)
					  (CONS 'RP L))))))))

(DEFUN PRINLIS (E) (PRINB E NIL))

(DEFUN PRINB (E L) 
       (COND ((ATOM E) (CONS E L))
	     (T (CONS 'LP
		      (COND ((NULL (CDR E))
			     (PRINB (CAR E) (CONS 'RP L)))
			    ((ATOM (CDR E))
			     (PRINB (CAR E)
				    (CONS 'DOT
					  (CONS (CDR E)
						(CONS 'RP
						      L)))))
			    (T (PRINB (CAR E)
				      (CDR (PRINB (CDR E) L)))))))))

(DEFUN REV1 (U V) 
       (COND ((NULL U) V) (T (REV1 (CDR U) (CONS (CAR U) V)))))